A Universal Asynchronous Receiver/Transmitter (UART) is a piece of computer hardware that translates data between parallel and serial forms. A UART is an integrated circuit used for serial communication that contains a receiver (serial-to-parallel converter) and a transmitter (parallel-to-serial converter), each clocked separately. The parallel side of a UART can be connected to the bus of a computer. When the computer writes a byte to the transmit data register of a UART, the UART will start to transmit the data on the serial line. UARTs are often used with communication standards such as EIA, RS-422, RS-232 or RS-485. The universal designation indicates that the transmission speeds and data format are configurable and that the electric signaling levels and methods are typically handled by a special driver circuit that is external to the UART.
UARTs are often included in microcontrollers. A dual UART (DUART) combines two UARTs into a single chip. Several modern integrated circuits now come with a UART that can also communicate synchronously. Such a device is called a universal synchronous/asynchronous receiver/transmitter (USART).
The UART circuit generally includes five components i.e., a transmitter, receiver, a baud rate generator, first-in-first-out (FIFO) storage components, and a CPU interface module. The transmitter module converts the incoming parallel data into serial data and sends it through a transmit channel; wherein the receiver module does the opposite function. The baud rate generator generates different clocks for the UART receiver and transmitter channel depending on the configuration. Two FIFOs are used for buffering data in and out from the UART. The CPU interface module connects the UART protocol to microcontroller based system.
There are two types of UARTs which are based on the usage of FIFOs. The first type is the UART with Dual Asynchronous FIFOs. This is the most commonly used UART design. In this design, two asynchronous FIFOs are utilized between the receiver/transmitter channel and the CPU interface channel. The second type of UART is the UART with two synchronous FIFOs. In this design, instead of using asynchronous FIFOs, the data is synchronized and two synchronous FIFOs are used for buffering the data. This design is not commonly used since the UART is an asynchronous device.